package com.jfm.jfmm.collector.entity.collect.param;

import com.jfm.jfmm.collector.entity.collect.Param;
import com.jfm.jfmm.collector.enums.snmp.SNMPMethod;
import com.jfm.jfmm.collector.enums.snmp.SNMPProtocol;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Map;

/**
 * @author DYang
 * @since 2024-10-09 21:51
 * SNMP 请求入参
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class SNMPParam extends Param {


    // 连接配置
    /**
     * 目标IP地址
     */
    private String host;

    /**
     * 目标端口
     */
    private Integer port;

    /**
     * 团体名
     */
    private String community;
    /**
     * SNMP版本协议
     */
    private SNMPProtocol protocol;
    /**
     * SNMP V3参数
     */
    private V3 v3;

    /**
     * 是否检查SNMP可用性
     */
    private boolean checkHost;
    /**
     * 使用OID 测试联通性
     */
    private boolean checkOid;

    // 采集项配置
    /**
     * 对象ID
     */
    private String oids;
    /**
     * SNMP请求方式
     */
    private SNMPMethod method;

    /**
     * 上下文名称
     */
    private String contextName;


    @Data
    public static class V3 {
        /**
         * 用户名
         */
        private String username;
        /**
         * 认证密码
         */
        private String authPass;
        /**
         * 认证加密方式
         */
        private String privPass;
        /**
         * 认证加密方式
         */
        private String authProtocol;
        /**
         * 加密协议
         */
        private String privProtocol;
        /**
         * 安全级别
         */
        private String securityLevel;

        /**
         * authPasswordEncryption
         * v3 requires
         */
        private String authPasswordEncryption;

        /**
         * 密码加密方式
         * v3 requires
         */
        private String privPasswordEncryption;

    }
}
